package com.egao.orderB.biz;

import com.egao.common.core.damon.results.PageResult2;
import com.egao.common.core.web.JsonResult;
import com.egao.common.system.entity.User;
import com.egao.orderB.entity.Bill;
import com.egao.orderB.entity.BillFee;
import com.egao.orderB.entity.BillFeeWriteOffItem;
import org.apache.poi.ss.formula.functions.T;

import java.util.List;

/**
 *
 * 数据层接口
 * @author : Doman
 * @date : 2020-06-15 16:11:54
 * @version ：1.0
 */
public interface BillFeeBiz {

	/** 获取实体类表格
	 * @param page
	 * @param billFee
	 * @return
	 */
	public JsonResult list(PageResult2<T> page, BillFee billFee, User loginUser) throws Exception;

	/** 获取实体类表格
	 * @param page
	 * @param billFee
	 * @return
	 */
	public JsonResult listByFeeName(PageResult2<T> page, BillFee billFee, User loginUser) throws Exception;

	/**
	 * 获取实体类表格
	 * @param billFee
	 * @return
	 */
	public List<BillFee> list(BillFee billFee, User loginUser);

	/**
	 * 获取实体类表格
	 * @param billFee
	 * @return
	 */
	public Integer chartTotalFee(BillFee billFee, User loginUser);

	/**
	 * 获取实体类表格
	 * @param billFee
	 * @return
	 */
	public List<BillFee> chartTotalMonthFee(BillFee billFee, User loginUser);

	/**
	 * 获取实体类表格
	 * @param billFee
	 * @return
	 */
	public List<BillFee> exportList(BillFee billFee, User loginUser);

	/**
	 * 获取实体类表格
	 * @param billFee
	 * @return
	 */
	public List<BillFee> exportList2(BillFee billFee, User loginUser);

	/**
	 * 获取实体类表格
	 * @param billFee
	 * @return
	 */
	public List<BillFee> exportListClassifyList(BillFee billFee, User loginUser);

	/**
	 * 获取实体类表格
	 * @param bill
	 * @return
	 */
	public List<String> feeNames(Bill bill, List<String> feeNames, User loginUser);

	/**
	 * 获取实体类表格
	 * @param bill
	 * @return
	 */
	public List<String> feeNamesBillAndApply(Bill bill, List<String> feeNames, User loginUser);

	/**
	 * 根据Id查询实体类
	 * @param billFee
	 * @return
	 */
	public BillFee getById(BillFee billFee);
	
	/**
	 * 保存实体类
	 * @param billFee
	 * @param loginUser
	 * @return
	 */
	public boolean save(BillFee billFee, User loginUser);
	
	/**
	 * 修改实体类
	 * @param billFee
	 * @param loginUser
	 * @return
	 */
	public boolean update(BillFee billFee, User loginUser);

	/**
	 * 修改实体类
	 * @param billFee
	 * @param loginUser
	 * @return
	 */
	public boolean updateFeeState(BillFee billFee, User loginUser);

	/**
	 * 修改实体类
	 * @param billFee
	 * @param loginUser
	 * @return
	 */
	public boolean updateFeeStateByBill(BillFee billFee, User loginUser);

	/**
	 * 删除实体类
	 * @param billFee
	 * @param loginUser
	 * @return
	 */
	public boolean remove(BillFee billFee, User loginUser);

	/**
	 * 修改文件附件
	 * @param billFeeWriteOffItem
	 * @param loginUser
	 * @return
	 */
	public boolean updateWriteOffAccounts(BillFeeWriteOffItem billFeeWriteOffItem, User loginUser);
}
